package ru.bank.paymentprocessing.state;

import lombok.extern.slf4j.Slf4j;
import ru.bank.paymentprocessing.service.PaymentService;

import java.math.BigDecimal;

/**
 * Состояние завершения обработки платежа.
 */
@Slf4j
public class EndState implements State {

    public static final BigDecimal MIN_AMOUNT_FOR_BIG_BONUS = BigDecimal.valueOf(300);
    public static final BigDecimal PERCENT_BONUS_BIG = BigDecimal.valueOf(0.3);

    @Override
    public void processPayment(PaymentService context) {
        log.info("Завершающая обработка");

        // Получаем сумму платежа
        var amount = context.getPaymentAmount();

        if (amount.compareTo(MIN_AMOUNT_FOR_BIG_BONUS) > 0) {
            var bonus = amount.multiply(PERCENT_BONUS_BIG);
            log.info("Бонус за крупную онлайн покупку: {}", bonus);
            context.addBonus(bonus);
        }

        // Переходим в начальное состояние (RootState)
        context.setState(new RootState());
    }
}
